home *** CD-ROM | disk | FTP | other *** search
/ Directorty Opus 5 - Magellan / Opus 5 - Magellan.iso / Archiv / BangerC64opus.lha / BangerC64opus.dopus5 next >
Text File  |  1996-12-01  |  10KB  |  363 lines

  1. /* Program: BangerC64opus.dopus5 DopusHandle for the Easy1541 Software under Dopus5.5
  2.      Autor: Andre´ Trettin
  3.   Codename: Banger
  4.      Begin: 25-Nov-96
  5.       $VER: BangerC64.dopus5 1.0 (25-Nov-96)*/
  6.  
  7. /* Path for the Software "Easy1541" */
  8.  
  9. IECPATH='XE1:Emu/Easy1541'
  10.  
  11. /* Change it! */
  12.  
  13.  
  14. parse arg portname UNITNR
  15. if portname='' then portname='DOPUS.1'
  16. if UNITNR='' then UNITNR='8'
  17. if ~show('l','rexxsupport.library') then
  18.     call addlib('rexxsupport.library',0,-30,0)
  19. if ~openport('BangerHandler') then exit
  20.  
  21. address value portname
  22.  
  23. signal on syntax
  24. options results
  25. options failat 20
  26. lf='0a'x
  27.  
  28. lister new
  29. handle=result
  30.  
  31. address command ''IECPATH'/IECDir >T:BangerC64Dir.temp 'UNITNR''
  32. open(1,'T:BangerC64Dir.temp','R')
  33. readln(1)
  34. DISKNAME=delstr(readln(1),1,8)
  35. DISKNAME=delstr(DISKNAME,length(DISKNAME)-12,13)
  36. i=0
  37. do forever
  38.     filezeile=readln(1)
  39.     if filezeile="" then leave
  40.     i=i+1
  41.     filezeile=delstr(filezeile,length(filezeile)-5,6)
  42.     parse value filezeile with BLOCKS.i '"' NAME.i '"' TYP.i
  43.     BLOCKS.i=space(BLOCKS.i,0)
  44.     Zahl=BLOCKS.i
  45.     if (datatype(Zahl,Numeric)) then Zahl=Zahl*254
  46.     BLOCKS.i=Zahl
  47.     TYP.i=space(TYP.i,0)
  48. end
  49. close(1)
  50. FREI=BLOCKS.i
  51. FREI=delstr(FREI,length(FREI)-10,11)*254
  52. ANZAHLFILE=i-1
  53. LISTERTITLE=DISKNAME||", "||FREI||" Bytes"
  54. lister set handle title LISTERTITLE
  55. lister set handle sort name
  56. lister set handle busy on
  57. lister set handle progress ANZAHLFILE
  58. lister refresh handle full
  59.  
  60. do i=1 to ANZAHLFILE
  61.     lister query handle abort
  62.     if result then leave
  63.     lister set handle progress count i
  64.     lister set handle progress name NAME.i
  65.     lister add handle '"'NAME.i'" "'BLOCKS.i'" -1 0 r 'TYP.i''
  66.     lister set handle display name size comment
  67.     lister refresh handle full
  68. end
  69. lister set handle busy off
  70. lister refresh handle full
  71. lister set handle handler 'BangerHandler' 'quotes'
  72.  
  73. dopus addtrap copy 'BangerHandler'
  74. dopus addtrap move 'BangerHandler'
  75. dopus addtrap copyas 'BangerHandler'
  76. dopus addtrap moveas 'BangerHandler'
  77. dopus addtrap delete 'BangerHandler'
  78. dopus addtrap rename 'BangerHandler'
  79. dopus addtrap read 'BangerHandler'
  80. dopus addtrap hexread 'BangerHandler'
  81. dopus addtrap devicelist 'BangerHandler'
  82. dopus addtrap parent 'BangerHandler'
  83. dopus addtrap root 'BangerHandler'
  84. dopus addtrap show 'BangerHandler'
  85. dopus addtrap play 'BangerHandler'
  86. dopus addtrap protect 'BangerHandler'
  87. dopus addtrap datestamp 'BangerHandler'
  88. dopus addtrap comment 'BangerHandler'
  89. dopus addtrap makedir 'BangerHandler'
  90. dopus addtrap addicon 'BangerHandler'
  91. dopus addtrap cachelist 'BangerHandler'
  92.  
  93. do forever
  94.   if waitpkt('BangerHandler') then do
  95.    packet=getpkt('BangerHandler')
  96.    if packet='00000000'x then iterate
  97.    event=getarg(packet,0)
  98.    handle=getarg(packet,1)
  99.    titel=getarg(packet,2)
  100.    user=getarg(packet,3)
  101.    pathstr=getarg(packet,4)
  102.    if event="Root" then leave
  103.    if event="Parent" then leave
  104.    if event="parent" then leave
  105.    if event="inactive" then leave
  106.     select
  107.       when event="Copy" then call C64Copy
  108.       when event="Move" then call C64Move
  109.       when event="CopyAs" then call C64CopyAs
  110.       when event="MoveAs" then call C64MoveAs
  111.       when event="Delete" then call C64Delete
  112.       when event="Rename" then call C64Rename
  113.       when event="dropfrom" then call C64Copy
  114.       when event="drop" then call C64Save
  115.       when event="Read" then call C64Read
  116.       when event="doubleclick" then call C64HexRead
  117.       when event="HexRead" then call C64HexRead
  118.       when event="MakeDir" then call C64MakeDir
  119.       when event="Play" then call C64Play
  120.       when event="Show" then call C64Show
  121.       otherwise call BangerInfo
  122.     end
  123.    reply(packet,10)
  124.   end
  125. end
  126.  
  127. lister clear handle
  128. lister refresh handle full
  129. lister close handle
  130. dopus remtrap '*' 'BangerHandler'
  131. call closeport('BangerHandler')
  132. address command 'Delete >NIL: T:Banger#?'
  133. exit
  134.  
  135. /* BangerInfo */
  136. BangerInfo:
  137.     Confirm "Banger bringt den C64´er wieder zum laufen!"
  138. Return
  139.  
  140. /* C64HexRead */
  141. C64HexRead:
  142.     if event='doubleclick' then lister select handle '"'titel'"' on
  143.     call C64Load
  144.     command hexread "T:BangerC64Datei"
  145. return
  146.  
  147. /* C64Read */
  148. C64Read:
  149.     call C64Load
  150.     command read "T:BangerC64Datei"
  151. return
  152.  
  153. /* C64Load */
  154. C64Load:
  155.     lister set handle busy on
  156.     lister query handle selfiles stem files.
  157.     lister set handle progress files.count
  158.     lister refresh handle full
  159.     do i=0 to files.count-1
  160.         titel=files.i
  161.         lister set handle progress count i+1
  162.         lister set handle progress name titel
  163.         lister query handle abort
  164.         if result then leave
  165.         Zielname="T:BangerC64Datei"
  166.         Quellname='"'titel'"'
  167.         address command ''IECPATH'/IECLoad >NIL: 'Quellname' 'Zielname' 'UNITNR''
  168.         lister select handle '"'titel'"' off
  169.         lister refresh handle full
  170.     end
  171.     lister set handle busy off
  172. return
  173.  
  174. /* C64Save */
  175. C64Save:
  176.     lister set handle busy on
  177.     lister set user busy on
  178.     if event='drop' then do
  179.         temp=user
  180.         user=handle
  181.         handle=temp
  182.         files.count=1
  183.         titel=delstr(titel,1,1)
  184.         titel=delstr(titel,length(titel),1)
  185.         files.0=titel
  186.         lister query handle path
  187.         pathstr=result
  188.     end
  189.     else lister query handle selfiles stem files.
  190.     lister set handle progress files.count
  191.     lister refresh handle full
  192.     do i=0 to files.count-1
  193.         titel=files.i
  194.         lister set handle progress count i+1
  195.         lister set handle progress name titel
  196.         lister query handle abort
  197.         if result then leave
  198.         neutitel=titel
  199.         Quellname='"'pathstr||titel'"'
  200.         if CopyAs_FLAG=1 then do
  201.             dopus getstring '"Bitte neuen Namen eingeben" "'neutitel'" OK|Abbruch'
  202.             if DOPUSRC=0 then leave
  203.             neutitel=result
  204.             if neutitel="RESULT" then neutitel=titel
  205.             lister set handle progress name neutitel
  206.         end
  207.         Zielname='"'neutitel'"'
  208.         address command ''IECPATH'/IECSave >NIL: 'Quellname' 'Zielname' 'UNITNR''
  209.         lister select handle '"'titel'"' off
  210.         if Delete_FLAG=1 then do
  211.             address command 'delete >NIL: 'Quellname''
  212.             lister remove handle '"'titel'"'
  213.             lister refresh handle
  214.         end
  215.         lister refresh handle full
  216.         lister query handle entry '"'titel'"' stem datei
  217.         lister add user '"'neutitel'" 'datei.size' -1 0 r PRG'
  218.         lister refresh user
  219.     end
  220.     lister set handle busy off
  221.     lister set user busy off
  222.     lister read handle '"'pathstr'"' force
  223.     lister refresh user full
  224.     CopyAs_FLAG=0
  225. return
  226.  
  227. /* C64Rename */
  228. C64Rename:
  229.     lister set handle busy on
  230.     lister set user busy on
  231.     lister query handle selfiles stem files.
  232.     lister set handle progress files.count
  233.     lister refresh handle full
  234.     do i=0 to files.count-1
  235.         titel=files.i
  236.         lister set handle progress count i+1
  237.         lister set handle progress name titel
  238.         lister query handle abort
  239.         if result then leave
  240.         Quellname='"'titel'"'
  241.         dopus getstring '"Bitte neuen Namen eingeben" 'Quellname' OK|Abbruch'
  242.         if DOPUSRC=0 then leave
  243.         neutitel=result
  244.         if neutitel="RESULT" then neutitel=titel
  245.         lister set handle progress name neutitel
  246.         Argumente='"R0:'neutitel'=0:'titel'"'
  247.         address command ''IECPATH'/IECCmd >NIL: 'Argumente' 'UNITNR''
  248.         lister query handle entry Quellname stem datei
  249.         datei.name=neutitel
  250.         lister remove handle Quellname
  251.         lister add handle '"'datei.name'" 'datei.size' -1 0 r 'datei.comment''
  252.         lister refresh handle
  253.         lister refresh handle full
  254.     end
  255.     lister set handle busy off
  256.     lister set user busy off
  257.     lister refresh user full
  258. return
  259.  
  260. /* C64Delete */
  261. C64Delete:
  262.     lister set handle busy on
  263.     lister set user busy on
  264.     lister query handle selfiles stem files.
  265.     lister set handle progress files.count
  266.     lister refresh handle full
  267.     do i=0 to files.count-1
  268.         titel=files.i
  269.         lister set handle progress count i+1
  270.         lister set handle progress name titel
  271.         lister query handle abort
  272.         if result then leave
  273.         Argumente='"S0:'titel'"'
  274.         address command ''IECPATH'/IECCmd >NIL: 'Argumente' 'UNITNR''
  275.         lister remove handle '"'titel'"'
  276.         lister refresh handle
  277.         lister refresh handle full
  278.     end
  279.     lister set handle busy off
  280.     lister set user busy off
  281.     lister refresh user full
  282. return
  283.  
  284. /* C64CopyAs */
  285. C64CopyAs:
  286.     CopyAs_FLAG=1
  287.  
  288. /* C64Copy */
  289. C64Copy:
  290.    if pathstr~="" then call C64Save
  291.    else do
  292.     lister set handle busy on
  293.     lister set user busy on
  294.     if event='dropfrom' then do
  295.         files.count=1
  296.         titel=delstr(titel,1,1)
  297.         titel=delstr(titel,length(titel),1)
  298.         files.0=titel
  299.     end
  300.     else lister query handle selfiles stem files.
  301.     lister set handle progress files.count
  302.     lister refresh handle full
  303.     lister query user path
  304.     Zielpfad=result
  305.     do i=0 to files.count-1
  306.         titel=files.i
  307.         lister set handle progress count i+1
  308.         lister set handle progress name titel
  309.         lister query handle abort
  310.         if result then leave
  311.         neutitel=titel
  312.         Quellname='"'titel'"'
  313.         if CopyAs_FLAG=1 then do
  314.             dopus getstring '"Bitte neuen Namen eingeben" 'Quellname' OK|Abbruch'
  315.             if DOPUSRC=0 then leave
  316.             neutitel=result
  317.             if neutitel="RESULT" then neutitel=titel
  318.             lister set handle progress name neutitel
  319.         end
  320.         Zielname='"'Zielpfad||neutitel'"'
  321.         address command ''IECPATH'/IECLoad >NIL: 'Quellname' 'Zielname' 'UNITNR''
  322.         lister select handle '"'titel'"' off
  323.         if Delete_FLAG=1 then do
  324.             Argumente='"S0:'titel'"'
  325.             address command ''IECPATH'/IECCmd >NIL: 'Argumente' 'UNITNR''
  326.             lister remove handle '"'titel'"'
  327.             lister refresh handle
  328.         end
  329.         lister refresh handle full
  330.     end
  331.     lister set handle busy off
  332.     lister set user busy off
  333.     lister read user '"'Zielpfad'"' force
  334.     lister refresh user full
  335.     CopyAs_FLAG=0
  336.    end
  337. return
  338.  
  339. /* C64MoveAs */
  340. C64MoveAs:
  341.     Delete_FLAG=1
  342.     call C64CopyAs
  343.     Delete_FLAG=0
  344. return
  345.  
  346. /* C64Move */
  347. C64Move:
  348.     Delete_FLAG=1
  349.     call C64Copy
  350.     Delete_FLAG=0
  351. return
  352.  
  353. /* Wird später noch eingefügt */
  354. C64MakeDir:
  355. C64Play:
  356. C64Show:
  357.  
  358. return
  359.  
  360. syntax:
  361. SAY "error at line" SIGL ":" RC
  362. Return
  363.